package com.example.userlogon.controller;

import com.example.userlogon.entity.User;
import com.example.userlogon.service.UserService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.server.Session;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.HttpRequestHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class UserController {

    @Autowired
    UserService userService;
    @Autowired
    HttpServletRequest request;

    //    处理前端的用户请求，或者给前端传递数据
    @RequestMapping("/")
    public String main() {
        return "login";
    }

    //    进入管理系统主窗体
//    静态资源的引入： css,js,img

    @RequestMapping("/main")
    public String main(Model model) {
        Object username =  request.getSession().getAttribute("username");
        model.addAttribute("username", username);
        return "main";
    }

    //    进入用户注册页面
    @RequestMapping("/register")
    public String register() {
        return "register";
    }

    //    处理一下用户的注册
    @RequestMapping("/registerProcess")
    public String register(@RequestParam String username, @RequestParam String userpwd) {
//        接收到前端发送过来的数据
        System.out.println("接收到了数据----" + username);
        if (username.isEmpty()) {
            return "redirect:/register";
        } else {
//        将数据组装成user实体对象
            User user = new User();
            user.setName(username);
            user.setPassword(userpwd);
            user.setRights("0");
            user.setStatus("0");
            System.out.println(user);
//        调用service的add方法将对象增加到数据库
            if (userService.add(user) == 1) {
                return "redirect:/";
            } else {
                return "redirect:/register";
            }
//        如果成功，就进入login登录页面，否则，就提示错误
        }
    }

    //    处理用户的登录请求
    @RequestMapping("/loginProcess")
    public String loginProcess(HttpServletRequest request, @RequestParam String username, @RequestParam String userpwd) {
        //首先看有没有接受到数据
        System.out.println(username);
        System.out.println(userpwd);
        User user = new User();
        user.setName(username);
        User userdb = userService.findOne(user);
        //如果密码正确，进入main.html
        if (!userdb.getName().isEmpty()) {
            if (userdb.getPassword().equals(userpwd)) {
                HttpSession session = request.getSession();
                session.setAttribute("username",username);
                return "redirect:/main";
            } else {
                return "redirect:/loginError";
            }
        } else {
            return "redirect:/loginError";
        }
        //如果有误，提示
    }

    //确认接受到参数
//        if(username.isEmpty()){
//            return "redirect:/error";
//        }else{
//            1.组装一下user实体对象
//            User user= new User();
//            user.setName(username);
//            user.setPassword(userpwd);
//            2.调用service的findOne方法去查看数据库是否有前端发送的用户名和密码
//            User userdb = userService.findOne(user);
//            3.如果有用户名，而且密码也对，就可以进入主页
//              如果有用户名，但密码不对，进入错误页面
//              用户名不存在，直接进入错误页面
//            if(userdb.getName().isEmpty()){
//                return "redirect:/error";
//            }else{
//                if(userdb.getPassword().equals(userpwd)){
//                    使用会话技术存储下来当前登录的用户，session
//
//                    return "redirect:/main";
//                }else{
//                    return "loginError";
//                }
//            }
//        }
//    }
//    登录用户退出
    @RequestMapping("/logout")
    public String logout() {
//          1.直接清除session里面的username的对应值
        request.getSession().removeAttribute("username");
//          2.返回登录页面
        return "redirect:/";
    }
}
